The software industry is constantly rewriting and improving the products it sells. Often, upgraded versions of software are “bug fixes” built to fix some problem that the previous upgrade introduced. Some upgrades add features that users were requesting or that a software developer thought would be desirable. Other upgrades are built to increase a program's compatibility with hardware upgrades or some other piece of software that has already been upgraded.
With the explosive growth of Internet access, many software applications and operating systems include an automatic update tool that will periodically check on the software manufacturer's Internet site to see if the current version of the software application running on a user's system is the latest version. If not, a mechanism exists for downloading and installing the latest version of the software application on the user's system.
There are several potential shortcomings in these automatic update tools. First, a user might not need the new features that are offered in the upgrade. Second, the potential exists that the newest version of the software application may introduce more problems than are fixed by the upgrade. Also, many users have relatively low-bandwidth connections to download such upgrades. The blossoming size of software packages has made many of these downloads take an unreasonable amount of time on a standard dial-up Internet connection. Also, there is often no indication of how big the update will be until it is actually started.
As a result, many computer and server users do not keep current with the latest hardware and software upgrades for their system, and subsequently experience problems that could have been avoided. Many of the upgrades really are a boon, particularly bug fixes or security updates that patch holes that can make computers vulnerable to mischief. In addition, those users that do keep up with upgrades spend a considerable amount of time looking for new upgrades. They also spend significant time evaluating each new upgrade to determine if it is applicable to their specific environment and whether it has been sufficiently tested or “burned-in” in live environments (i.e., to avoid problems caused by a defective or incompatible code upgrade).
There is a need for a computer program product and method to provide autonomic upgrade maintenance of computer hardware, operating systems and application software. This program product and method should provide a highly configurable, efficient, event-driven method of automating this upgrade-related search and delivery function. The program product/method should utilize a variety of existing data sources and combine several actions with a set of configurable business rules to perform the various tasks within parameters set by the user.